home *** CD-ROM | disk | FTP | other *** search
- //: C13:NoMemory.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Constructor isn't called
- // If new returns 0
- #include <iostream>
- #include <new> // size_t definition
- using namespace std;
-
- void my_new_handler() {
- cout << "new handler called" << endl;
- }
-
- class NoMemory {
- public:
- NoMemory() {
- cout << "NoMemory::NoMemory()" << endl;
- }
- void* operator new(size_t sz) throw(bad_alloc){
- cout << "NoMemory::operator new" << endl;
- throw bad_alloc(); // "Out of memory"
- }
- };
-
- int main() {
- set_new_handler(my_new_handler);
- NoMemory* nm = new NoMemory;
- cout << "nm = " << nm << endl;
- } ///:~
-